package net.freestu.sola.web.spider.ballerina.core;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;

import net.freestu.sola.web.global.AllLinksHashtable;
import net.freestu.sola.web.global.AllPagesCounter;
import net.freestu.sola.web.global.ConfigReader;
import net.freestu.sola.web.global.GlobleOperator;
import net.freestu.sola.web.global.GlobleVar;
import net.freestu.sola.web.global.ThreadPool;
import net.freestu.sola.web.global.TimeLimitThread;
import net.freestu.sola.web.util.FileManager;
import net.freestu.sola.web.util.MyLogger;

public class Ballerina {
	/**
	 * args[0]: 为D://config.xml
	 * args[1]: 为爬行最大时间 一个小时为360000毫秒
	 * 命令: Ballerina D://config.xml 360000
	 * @param args 
	 */
	public static void main(String[] args) {

		/**
		 * 一.准备阶段-------------------------- 1)创建 Crawl Folder
		 * 2)创建全局部分：AllLinksHashtable AllPagesCounter SEEDRM(在GobleVar中自动init)
		 * 3)读取种子启动线程。
		 */
		File f=null;
		long maxtime=0;
		try {
			f = new File(args[0]);
			maxtime = Long.valueOf(args[1]);
		} catch (Exception e) {
		    System.out.println("参数出现错误,检查参数!!!!");
		}
		
		ConfigReader cr=new ConfigReader(f);
		FileManager.buildDir(GlobleVar.EXEFOLDER+File.separator+"Crawl Folder", GlobleVar.SITE);
		FileManager.buildFile(GlobleVar.EXEFOLDER+File.separator+"Crawl Folder"+File.separator
				+GlobleVar.SITE,"Log");
		new TimeLimitThread(maxtime).start();
		
		MyLogger.log("<===========Start preparing==========>");
		
		AllLinksHashtable alllinkshashtable = AllLinksHashtable.getInstance();
		AllPagesCounter allpagesCounter = AllPagesCounter.getInstance();
		ThreadPool threadpool = ThreadPool.getInstance();   

		MyLogger.log("<==========End preparing=============>");

		/**
		 * 二.下载阶段-------------------------
		 */
		MyLogger.log("<===========Start Fetch:==============>");

		ArrayList urlseeds = GlobleOperator.getSeeds();
		Iterator it=urlseeds.iterator();
		while(it.hasNext()){
		String ss=(String)it.next();	
		String urlname = GlobleOperator.getDomain(ss);
		//--这个地方判断是否将
		threadpool.add(urlname);// 加入线程。
		threadpool.start(urlname);// 启动Spider
		}
	}
}